USE [ERPSIADB]
GO

/****** Object:  StoredProcedure [dbo].[SP_OBTENER_ASIENTOS]    Script Date: 10/30/2010 06:15:29 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO




-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[SP_OBTENER_ASIENTOS]
	-- Add the parameters for the stored procedure here
	@Filtros XML
AS
BEGIN
	DECLARE @TipoDocFiltro VARCHAR(30)
	SELECT @TipoDocFiltro = filtro.value('@Valor','VARCHAR(30)')
		FROM @filtros.nodes('Filtros/CodigoDoc') ord(filtro)
	DECLARE @FechaContFiltro VARCHAR(30)
	SELECT @FechaContFiltro = filtro.value('@Valor','VARCHAR(30)')
		FROM @filtros.nodes('Filtros/FechaCont') ord(filtro)
	DECLARE @Ref1Filtro VARCHAR(30)
	SELECT @Ref1Filtro = filtro.value('@Valor','VARCHAR(30)')
		FROM @filtros.nodes('Filtros/Ref1') ord(filtro)
	DECLARE @Ref2Filtro VARCHAR(30)
	SELECT @Ref2Filtro = filtro.value('@Valor','VARCHAR(30)')
		FROM @filtros.nodes('Filtros/Ref2') ord(filtro)
	DECLARE @Ref3Filtro VARCHAR(30)
	SELECT @Ref3Filtro = filtro.value('@Valor','VARCHAR(30)')
		FROM @filtros.nodes('Filtros/Ref3') ord(filtro)

	DECLARE @ConsultaFiltrada VARCHAR(1000) 
	SET @ConsultaFiltrada = 'SELECT (SELECT IdAsiento AS ''IdAsiento'', IdTipoDocumento AS ''IdTipo'', FechaDocumento AS ''FechaDoc'',
	FechaContabilizacion AS ''FechaCont'', IdTemporadaPeriodo AS ''IdTemporada'', Referencia1 AS ''Ref1'',
	Referencia2 AS ''Ref2'', Referencia3 AS ''Ref3''
	FROM Asiento  WHERE 1=1'

	IF(@TipoDocFiltro != '')
		SET @ConsultaFiltrada += ' AND IdTipoDocumento = ' + @TipoDocFiltro
	IF(@FechaContFiltro != '')
		SET @ConsultaFiltrada += ' AND FechaContabilizacion = ' + '''' + @FechaContFiltro + ''''
	IF(@Ref1Filtro != '')
		SET @ConsultaFiltrada += ' AND ( Referencia1 = ' + '''' + @Ref1Filtro + '''' + ' OR Referencia2 = ' + '''' + @Ref1Filtro + '''' + ' OR Referencia3 = ' + '''' + @Ref1Filtro + '''' + ')'
	IF(@Ref2Filtro != '')
		SET @ConsultaFiltrada += ' AND ( Referencia1 = ' + '''' + @Ref2Filtro + '''' + ' OR Referencia2 = ' + '''' + @Ref2Filtro + '''' + ' OR Referencia3 = ' + '''' + @Ref2Filtro + '''' + ')'
	IF(@Ref3Filtro != '')
		SET @ConsultaFiltrada += ' AND ( Referencia1 = ' + '''' + @Ref3Filtro + '''' + ' OR Referencia2 = ' + '''' + @Ref3Filtro + '''' + ' OR Referencia3 = ' + '''' + @Ref3Filtro + '''' + ')'
	
	SET @ConsultaFiltrada += 'FOR XML PATH(''Asiento''), TYPE)FOR XML PATH(''Asientos'')'	
		
	EXECUTE(@ConsultaFiltrada)
END




GO


